package iit.projects.etaxi.model.dao;

import java.util.Date;
import java.util.List;

import iit.projects.etaxi.model.entity.Driver;
import iit.projects.etaxi.model.entity.SubCity;
import iit.projects.etaxi.model.entity.Vehicle;
import iit.projects.etaxi.model.entity.VehicleLocation;

public interface VehicleDao {
	
	public List<Vehicle> findVehicles();
	
	/**Finds Vehicles which are in close proximity to the given SubCity between the given time
	 * and which do not have further jobs assigned.
	 * @param subCity
	 * @param startTime
	 * @param endTime
	 * @return List<Vehicle>
	 */
	public List<Vehicle> findAvailableVehiclesInProximity(SubCity subCity, Date startTime, Date endTime);
	
	/**Returns Vehicles which are not on hire and whose drivers are available
	 * @return List<Vehicle>
	 */
	public List<Vehicle> findAvailableVehicles();
	
	public Vehicle updateVehicle(Vehicle vehicle);
	
	public List<Vehicle> updateVehicles(List<Vehicle> vehicles);
	
	public void saveDriver(Driver driver);
	
	public List<VehicleLocation> 
					findVehicleLocationsByStatusByReservationStatusBefore(String locationStatus, 
																		  String reservationStatus,
																		  Date time);
	
	public void deleteVehicleLocations(List<VehicleLocation> vehicleLocations);
	
	
}
